﻿using System;
using Newtonsoft.Json;

namespace TY.UT.Push.YouMeng
{
    /// <summary>
    /// 友盟推送消息实体基类
    /// </summary>
    public class BaseModel
    {
        #region json属性

        /// <summary>
        /// 必填 应用唯一标识
        /// </summary>
        [JsonProperty("appkey")]
        public string AppKey { get; set; }

        /// <summary>
        /// 必填 时间戳，10位或者13位均可，时间戳有效期为10分钟
        /// </summary>
        [JsonProperty("timestamp")]
        public long TimesTamp
        {
            get
            {
                DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
                DateTime nowTime = DateTime.Now;
                long unixTime = (long)Math.Round((nowTime - startTime).TotalMilliseconds, MidpointRounding.AwayFromZero);
                return unixTime;
            }
        }

        /// <summary>
        /// 必填 消息发送类型,其值可以为:
        /// unicast-单播，
        /// listcast-列播(要求不超过500个device_token)
        /// filecast-文件播(多个device_token可通过文件形式批量发送）
        /// broadcast-广播
        /// groupcast-组播                                
        /// </summary>
        [JsonProperty("type")]
        public string Type { get; set; }

        /// <summary>
        /// 可选 设备唯一表示
        /// 当type=unicast时,必填, 表示指定的单个设备
        /// 当type=listcast时,必填,要求不超过500个,
        /// 多个device_token以英文逗号间隔
        /// </summary>
        [JsonProperty("device_tokens")]
        public string DeviceToken { get; set; }

        /// <summary>
        /// 可选 当type=customizedcast时，必填，alias的类型, 
        /// alias_type可由开发者自定义,开发者在SDK中
        /// 调用setAlias(alias, alias_type)时所设置的alias_type
        /// </summary>
        [JsonProperty("alias_type")]
        public string AliasType { get; set; }
        /// <summary>
        ///可选 当type=customizedcast时, 开发者填写自己的alias。
        ///要求不超过50个alias,多个alias以英文逗号间隔。
        ///在SDK中调用setAlias(alias, alias_type)时所设置的alias
        /// </summary>
        [JsonProperty("alias")]
        public string Alias { get; set; }

        /// <summary>
        ///可选 当type=filecast时，file内容为多条device_token, 
        ///device_token以回车符分隔
        ///当type=customizedcast时，file内容为多条alias，
        ///alias以回车符分隔，注意同一个文件内的alias所对应
        ///的alias_type必须和接口参数alias_type一致。
        ///注意，使用文件播前需要先调用文件上传接口获取file_id
        /// </summary>
        //[JsonProperty("file_id")]
        //public string FileId { get; set; }

        /// <summary>
        /// 可选 终端用户筛选条件,如用户标签、地域、应用版本以及渠道等,
        /// </summary>
        //[JsonProperty("filter")]
        //public string Filter { get; set; }
        #endregion

        /// <summary>
        /// App密匙
        /// </summary>
        [JsonIgnore]
        public string AppSecret { get; set; }
        /// <summary>
        /// 友盟推送url
        /// </summary>
        [JsonIgnore]
        public string Url { get; set; }

    }
}
